﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace KylinORM.Mapper.Base
{
    /// <summary>
    /// 标记对象是否可提交
    /// </summary>
    public interface ISubmitable
    {
        /// <summary>
        /// 创建实体
        /// </summary>
        /// <returns></returns>
        int Create();
        /// <summary>
        /// 创建指定实体
        /// </summary>
        /// <param name="entity">需要创建的实体</param>
        /// <returns></returns>
        int Create(object entity);
        /// <summary>
        /// 更新实体，使用主键值作为条件，其他字段值作为参数
        /// </summary>
        /// <returns></returns>
        bool Update();
        /// <summary>
        /// 更新指定实体，使用主键值作为条件，其他字段值作为参数
        /// </summary>
        /// <param name="entity">需要更新的实体</param>
        /// <returns></returns>
        bool Update(object entity);
        /// <summary>
        /// 删除实体，使用已赋值的字段作为条件
        /// </summary>
        /// <returns></returns>
        bool Delete();
        /// <summary>
        /// 删除指定实体，使用已赋值的字段作为条件
        /// </summary>
        /// <param name="entity">需要删除的实体</param>
        /// <returns></returns>
        bool Delete(object entity);
        /// <summary>
        /// 使用指定的连接或事务执行后续方法
        /// </summary>
        /// <param name="cmd">包含数据库连接或事务的命令</param>
        /// <returns></returns>
        ISubmitable Use(IDbCommand cmd);
    }
}
